package com.lzy.cloud.user.service.impl;

import com.lzy.cloud.user.config.SysUserAdminConfig;
import com.lzy.cloud.user.dtos.SysUserAdminDto;
import com.lzy.cloud.user.entity.SysUserAdmin;
import com.lzy.cloud.user.mapper.SysUserAdminMapperExt;
import com.lzy.cloud.user.service.SysUserAdminService;
import com.lzy.framework.core.orm.db.Pager;
import com.lzy.framework.core.utils.DozerUtils;
import com.lzy.framework.core.utils.MD5Utils;
import com.lzy.framework.core.utils.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Author: 19516
 * @Despriction:
 * @Date: 2018-06-04 16:00
 */
@Service
public class SysUserAdminServiceImpl implements SysUserAdminService {

    @Autowired
    private SysUserAdminMapperExt sysUserAdminMapperExt;

    @Autowired
    private SysUserAdminConfig sysUserAdminConfig;


    @Override
    public Long insert(SysUserAdminDto sysUserAdminDto) {
        SysUserAdmin sysUserAdmin = DozerUtils.map(sysUserAdminDto, SysUserAdmin.class);
        /**
         * 加密规则:若密码为空，则取默认密码MD5+盐值后再次MD5的值，若密码不为空，则MD5后加上盐值再次MD5
         */
        String password = StringUtil.isBlank(sysUserAdmin.getPassword()) ? sysUserAdminConfig.getDefaultPasswordMd5() + sysUserAdminConfig.getSalt() : MD5Utils.MD5(sysUserAdmin.getPassword()) + sysUserAdminConfig.getSalt();
        sysUserAdmin.setPassword(MD5Utils.MD5(password));
        /**
         * 盐值
         */
        sysUserAdmin.setSalt(sysUserAdminConfig.getSalt());
        return sysUserAdminMapperExt.insertSelective(sysUserAdmin) > 0 ? sysUserAdmin.getId() : null;
    }

    @Override
    public int update(SysUserAdminDto sysUserAdminDto) {
        return sysUserAdminMapperExt.updateByPrimaryKeySelective(DozerUtils.map(sysUserAdminDto, SysUserAdmin.class));
    }

    @Override
    public Boolean delete(Long aLong) {
        return sysUserAdminMapperExt.deleteByPrimaryKey(aLong) > 0;
    }

    @Override
    @Deprecated
    public Boolean remove(Long aLong) {
        return null;
    }

    @Override
    public SysUserAdminDto findById(Long aLong) {
        return DozerUtils.map(sysUserAdminMapperExt.selectByPrimaryKey(aLong), SysUserAdminDto.class);
    }

    @Override
    public List<SysUserAdminDto> query(Pager pager, SysUserAdminDto sysUserAdminDto) {
        return null;
    }

    @Override
    public SysUserAdminDto findByLoginName(String name) {
        return sysUserAdminMapperExt.findByLoginName(name);
    }

}
